/**
 * there we create a memorizer for store the compute result, we should fullfill as below;<br/>
 * 1. should be high capability, that mean we should not use the synchronized token<br/>
 * 2. should avoid add the value in dplicate<br/>
 * 3. should handle the data expire<br/>
 * <br/>
 * For the first one, we can use ConcurrentHashMap for a concurrent container, and the value should be a future task<br/>
 * 2. we should use addIfAbsent method<br/>
 * 3. there should be some examination for the cancelled task<br/>
 * 4. we can use a visitor pattern for the task<br/>
 * 5. note, the future task should be run by thread.
 */
package practise.mulitThreads.ConcurrentInPractice.Memorizer;